package cn.yunhe.insurance.dao;


import cn.yunhe.insurance.entity.Cars;
import cn.yunhe.insurance.entity.Combo;
import cn.yunhe.insurance.entity.Order;
import cn.yunhe.insurance.entity.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.Map;

/**
 * @author 苏文秀
 * @date 2018/9/14 15:40
 */
@Mapper
public interface OrderDao {
    /**
     * 获取 所有的交易详情 条件筛选
     * @param map
     * @return
     */
    List<Order> getOrderList(Map<String, Object> map);
    /**
     * 生成订单
     * @param order
     * @return
     */
    boolean addOrder(Order order);

    /**
     * 根据保单号 查询订单的详细信息
     * @param oid
     * @return
     */
    Order getOrderById(String oid);

    /**
     * 根据保单的uuid查询保单的信息
     * @param ouid
     * @return
     */
    Order getOrderByOuid(String ouid);

    /**
     * 根据客户的身份证号 和 车牌号 来查询客户是否已经下过订单
     *
     * @param map
     * @return
     */
    Order getOrderByUserAndCars(Map<String, Object> map);

    /**
     * 修改订单状态 退保
     * @param order
     * @return
     */
    boolean updateOstate(Order order);

    /**
     * 根据车辆的信息  查询对应的客户
     * @param
     * @return
     */
    /*Cars getUserByCars(Cars cars);*/


    /**
     * 根据客户的身份证号 判断客户的信息是否已经存在
     * @param idcard
     * @return
     */
    User getUserByIdCard(String idcard);

    /**
     * 根据车辆的车牌号 查询系统中 是否记录有车辆的信息
     * @return
     */
    Cars getCarsByLicensenum(String licensenum);
    /**
     * 根据车牌 号查询保单信息
     * @param licenseNum
     * @return
     */
    Order getOrderInfoByCarLicenseNum(String licenseNum);

    /**
     * 更改此订单的支付状态
     * @param order
     * @return
     */
    boolean updateOrderPaystate(Order order);


    /**
     * 更改订单的状态  --关闭订单
     * @param order
     * @return
     */
    boolean updateOrderStatus(Order order);

    /**
     * 根据用户的uuid获取其对应的车辆信息
     * @param userid
     * @return
     */
    List<Cars> getCarByUser(String userid);

    /**
     * 查询所有已上架的保险套餐
     * @return
     */
    List<Combo> getAllCombo();
    /**
     * 根据车的价格算出增长比率
     * @param carPrice
     * @return
     */
    double getRateByCarPrice(double carPrice);


    int getOrderByCar(String carNo);
}
